<?php

namespace App\Admin;

use Illuminate\Database\Eloquent\Model;

class GetCategory extends Model
{
    /**
     *分类数组处理函数
     *@param array $data 接收数据库中查询出来的数组
     *@param int $cate_id 当前分类记录的id
     *@param int $count 缩进的标示
     *@return array $rec 处理之后的数组
     */
    public function getTree($data, $cate_id = 0, $count = 0)
    {
        //声明一个静态的变量
        static $rec = array();
        //循环数组
        foreach ($data as $val) {
            //需要对每一个数据中的键为pid的值进行判断
            if ($val['pid'] == $cate_id) {
                //先标示$count的值放入$val数量中
                $val['count'] = $count;
                //需要将该数据重新放入一新的的数组中
                $rec[] = $val;
                //判断当前分类下面是否还有子类
                $this->getTree($data, $val['id'], $count + 1);
            }
        }
        return $rec;
    }

    /**
     *获取分类下的所有子类
     *@param array $data 接收数据库中查询出来的数组
     *@param int $cate_id 当前分类记录的id
     *@param int $count 缩进的标示
     *@return array $rec 处理之后的数组
     */
    public function getChildId($data, $cate_id = 0)
    {
        //声明一个静态的变量
        static $rec = array();
        //循环数组
        foreach ($data as $val) {
            //需要对每一个数据中的键为pid的值进行判断
            if ($val['pid'] == $cate_id) {
                //需要将该数据重新放入一新的的数组中
                $rec[] = $val['id'];
                //判断当前分类下面是否还有子类
                $this->getChildId($data, $val['id']);
            }
        }
        return $rec;
    }


    /**
     *获取分类的所有父类
     *@param array $data 接收数据库中查询出来的数组
     *@param int $cate_id 当前分类记录的id
     *@param int $count 缩进的标示
     *@return array $rec 处理之后的数组
     */
    function getFather($data, $cate_id = 0)
    {
        //声明一个静态的变量
        static $rec = array();
        //循环数组
        foreach ($data as $val) {
            //需要对每一个数据中的键为id的值和传递进来的值进行匹配
            if ($val['id'] == $cate_id) {
                //需要将该数据重新放入一新的的数组中
                $rec[] = $val;
                //判断当前分类上面是否有父类
                getFather($data, $val['pid']);
            }
        }
        krsort($rec);
        return $rec;
    }
}
